package com.english.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDate;
import java.util.Date;

/**
 * 免费小课预约实体类
 * 存储学生的免费小课预约信息
 * 
 * @author system
 * @since 2025-01-27
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("free_lesson_appointment")
public class FreeLessonAppointment {
    /**
     * 预约ID
     */
    @TableId("id")
    private Long id;
    
    /**
     * 学生ID
     */
    @TableField("student_id")
    private Long studentId;
    
    /**
     * 时间段ID
     */
    @TableField("time_slot_id")
    private Long timeSlotId;
    
    /**
     * 预约日期
     */
    @TableField("appointment_date")
    private LocalDate appointmentDate;
    
    /**
     * 状态：PENDING=待确认, CONFIRMED=已确认, CANCELLED=已取消, COMPLETED=已完成, NO_SHOW=未到课
     */
    @TableField("status")
    private String status;
    
    /**
     * 取消原因
     */
    @TableField("cancel_reason")
    private String cancelReason;
    
    /**
     * 管理员备注
     */
    @TableField("admin_notes")
    private String adminNotes;
    
    /**
     * 确认的管理员ID
     */
    @TableField("confirmed_by")
    private Long confirmedBy;
    
    /**
     * 确认时间
     */
    @TableField("confirmed_time")
    private Date confirmedTime;
    
    /**
     * 是否为每周免费小课：1=是，0=否
     */
    @TableField("is_weekly_free")
    private Integer isWeeklyFree;
    
    /**
     * 周次标识，如"2025-W01"
     */
    @TableField("week_number")
    private String weekNumber;
    
    /**
     * 创建时间
     */
    @TableField("create_time")
    private Date createTime;
    
    /**
     * 更新时间
     */
    @TableField("update_time")
    private Date updateTime;
    
    /**
     * 学生姓名（关联查询字段，不映射到数据库）
     */
    @TableField(exist = false)
    private String studentName;
} 